package com.literaryfamily.literaryfamily.service.payment;

import com.literaryfamily.literaryfamily.entity.DiscountPrice;
import com.literaryfamily.literaryfamily.model.ReturnResult;

import java.util.Date;

/**
 * 优惠卷的发放和管理
 * 所有涉及读写的方法都需要抛出 WriteError 数据库读写错误异常(这个是运行时异常,只需要抛出不需要处理)
 * 此接口所有方法均不检查用户身份,应该验证身份后在进行检查
 *
 * @author 滑稽/因果报应
 */
public interface DiscountPriceService {

    /**
     * 系统自动生成随机折扣金额和折扣力度的优惠卷
     * 默认随机范围和力度在常量包中设置(MAX_AMOUNT,MIN_AMOUNT,MAX_DISCOUNT,MIN_DISCOUNT)
     *
     * @param expirationTime 过期时间
     * @param userId         发放用户ID
     * @return 随机生成的优惠卷(将记录到系统)
     */
    DiscountPrice addDiscountPrice(Long userId, Date expirationTime);

    /**
     * 手动发放折扣卷
     *
     * @param discountPrice 发放的折扣卷
     * @return 发放结果
     */
    DiscountPrice addDiscountPrice(DiscountPrice discountPrice);
}